home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 31
/
Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso
/
Opus5.5
/
ARexx.lha
/
ARexx
/
PlayMod_MP.dopus5
< prev
next >
Wrap
Text File
|
1996-06-13
|
5KB
|
144 lines
/* Mod-Player interface for Directory Opus 5.5
by Leo 'Nudel' Davidson for Gods'Gift Utilities
email: leo.davidson@keble.oxford.ac.uk www: http://users.ox.ac.uk/~kebl0364
$VER: PlayMod_MP.dopus5 1.5 (13.6.96)
This version is for use with MultiPlayer by Bryan Ford, but should be
easy to adapt to any other player with an ARexx port, such as
Eagle/DeliTracker, DMP, etc.
(In fact, a DeliTracker version should come with this script!).
If you include the path of a module on the command line, using {f}, only
this mod will be played. If you omit the {f}, the program will play each
selected file in the first SOURCE lister, giving you a requester to go to
the next file or stop playing.
If the player's ARexx port is not found, the program will be run for
you (you should edit the path below). This means the script may fail if
you disable the player's ARexx port, or give an incorrect command line
to it.
If the player's ARexx port takes over a minute to appear, an error
requester will appear on the DOpus screen and the script will quit.
REMEMBER to add the "RUN" command to the player command line if it does
not automatically detach from the shell (MultiPlayer does)!
If the player was running to start with, or the user selects
"Leave Playing", the module will continue playing when the script finishes.
Otherwise, the player will be quit.
Call as:
------------------------------------------------------------------------------
ARexx DOpus5:ARexx/PlayMod_MP.dopus5 {Qp} [{f}]
------------------------------------------------------------------------------
Turn off all switches.
"[]" means this part is optional.
//- Path to MultiPlayer command --------------------------------------------*/
MultiPlayer = "DH0:Tools/Music/MultiPlayer"
/*--------------------------------------------------------------------------*/
options results
options failat 99
signal on syntax;signal on ioerr /* Error trapping */
parse arg DOpusPort FilePath
DOpusPort = Strip(DOpusPort,"B",'" ')
/* Important: FilePath must be stripped as below incase there is a space at
the beginning or end of the filename */
FilePath = Strip(Strip(FilePath,"B",' '),"B",'"')
If DOpusPort="" THEN Do
Say "Not correctly called from Directory Opus 5!"
Say "Load this ARexx script into an editor for more info."
EXIT
END
If ~Show("P",DOpusPort) Then Do
Say DOpusPort "is not a valid port."
EXIT
End
Address value DOpusPort
dopus version
If ( result='RESULT' | translate(result,'.',' ') < 5.1218 ) then do
dopus request '"This script requires DOpus v5.5 or greater." OK'
EXIT
end
Quit_After = "NO"
If ~Show("P","RXTRACKER") Then Do
Address Command MultiPlayer "NOREQUEST"
Address Command "WaitForPort RXTRACKER"
Quit_After = "YES"
If ~Show("P","RXTRACKER") then do
dopus request '"Error loading MultiPlayer!'|| '0a'x ||'Check its command-path in the ARexx script itself." OK'
EXIT
END
END
/* If file-path was specified on command line, just play that mod, else
go through all the selected ones. */
If FilePath = "" Then Do
lister query source stem source_handle.
IF source_handle.count = 0 | source_handle.count = "SOURCE_HANDLE.COUNT" Then Do
dopus request '"You must have a SOURCE lister!" OK'
EXIT
End
lister set source_handle.0 busy 1
lister query source_handle.0 numselentries /* Get info about selected */
Lister_NumSelEnt = RESULT /* entries & path to them */
lister query source_handle.0 path
Lister_Path = Strip(RESULT,"B",'"')
Do i=1 to Lister_NumSelEnt
lister query source_handle.0 firstsel
Temp_Name = Strip(RESULT,"B",'"')
lister select source_handle.0 Temp_Name 0
Temp_Path = Lister_Path || Temp_Name
Address RXTRACKER Load Temp_Path;Address RXTRACKER Play
If Lister_NumSelEnt - i > 0 Then Do
If Quit_After = "YES" Then
lister request source_handle.0 '"Playing module' i 'of' Lister_NumSelEnt || ':' || X2C(0A) || Temp_Name || '" Next|Leave Playing|Stop'
Else
lister request source_handle.0 '"Playing module' i 'of' Lister_NumSelEnt || ':' || X2C(0A) || Temp_Name || '" Next|Leave Playing'
IF RC = "0" THEN BreakIt = "YES"
IF RC = "2" THEN Do
BreakIt = "YES"
Quit_After = "NO"
END
End
Else Do
If Quit_After = "YES" Then
lister request source_handle.0 '"Playing module' i 'of' Lister_NumSelEnt || ':' || X2C(0A) || Temp_Name || '" Leave Playing|Stop'
Else
lister request source_handle.0 '"Playing module' i 'of' Lister_NumSelEnt || ':' || X2C(0A) || Temp_Name || '" Leave Playing'
IF RC = "1" Then Quit_After = "NO"
End
IF BreakIt = "YES" THEN BREAK
END
End
ELSE Do
Address RXTRACKER Load FilePath;Address RXTRACKER Play
If Quit_After = "YES" Then
dopus request '"Playing module:' || X2C(0A) || FilePath || '" Leave Playing|Stop'
Else
dopus request '"Playing module:' || X2C(0A) || FilePath || '" Leave Playing'
IF RC ~= "0" THEN Quit_After = "NO"
End
/*-- Restore the Lister for normal use --------------------------------------*/
syntax:;ioerr: /* In case of error, jump here */
END_PART_2:
If FilePath = "" Then Do
lister refresh source_handle.0
lister set source_handle.0 busy 0
END
END_PART:
If Quit_After = "YES" Then Address RXTRACKER QUIT
EXIT